﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using EGuayas.Web.Resources;
using EntGuayasSLA.BL.Listas;
using Ext.Net;
using EntGuayasSLA.BL;
using System.IO;
using System.Text;
using EntGuayasSLA.BL.Licenciamiento;
using EGuayas.Web.Usuario;
using EntGuayasSLA.BL.Listas.Criterias;

namespace EGuayas.Web.Auditoria.Admin.Otro
{
    public partial class pgNuevoExpediente : pgBase
    {
       
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!X.IsAjaxRequest)
            {
                   string  ExpedienteIdTmp = Request["exp_id"];
                   string  AuditoriaIdTmp = "";

                   SetSessionPage setSession = new SetSessionPage(SessionPage.PageGestionPromoAudOts, Request["evt"]);
                   Expediente expediente = Expediente.GetEditableRoot(Guid.Parse(ExpedienteIdTmp));

                   switch (GetSessionPage.GetSession(SessionPage.PageGestionPromoAudOts))
                   {
                         case Valores.PageEvento_Nuevo:
                         
                            this.txtNombre.Text  = expediente.Nombre;
                            this.txtDescrip.Text = expediente.Descripcion;
                            this.dtFechaInicio.SetValue(DateTime.Now);
                            this.dtFechaInicio.ReadOnly = true;
                            this.btnEnviar.Disable();
                            break;
                         case Valores.PageEvento_Modificar:
                            AuditoriaIdTmp = Request["ots_id"];
                            AuditoriaOtros audOts = AuditoriaOtros.GetEditableRoot(Guid.Parse(AuditoriaIdTmp));
                            frmAuditoria.SetValues(new {
                                Nombre  = expediente.Nombre,
                                Descrip = expediente.Descripcion,
                                FechaInicio = audOts.FechaInicio.ToShortDateString(),
                                FechaFin    = audOts.FechaFin.ToShortDateString()
                            });
                            this.hdIdGlobalOts.SetValue(AuditoriaIdTmp);
                            this.btnEnviar.Enable();
                            break;
                         default:
                            this.btnEnviar.Disable();
                            btnSave.Disable();
                            break;
                   }
                   if (Request["closePlus"] != null && Request["closePlus"] =="true")
                   {
                       this.btnClosePlus.Show();

                   }
                   else
                   {
                       this.btnClosePlus.Hide();
                   }
                   //Documentos adicionales
                   List<object> list = new List<object>
                    {
                        new {Nombre = "Word", Id = "Word"},
                        new {Nombre = "Pdf", Id ="Pdf"}
                    };
                   this.stoTipoFrm.DataSource = list;
                   this.stoTipoFrm.DataBind();
                
            }//if (!X.IsAjaxRequest)
           
           GridPanel myGrid = this.gdDocAdd;
           myGrid.GetStore().AutoLoadParams.Add(new Ext.Net.Parameter("idOts", this.hdIdGlobalOts.Text));
           
        }
        /// <summary>
        /// Grabar información de expediente
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnSave_Click(object sender, DirectEventArgs e)
        {
            try
            {
                string AuditoriaIdTmp = "";
                string stringMsg = "";
                string gridJson  = e.ExtraParams["prmValues"];
                var dataItem = JSON.Deserialize<Dictionary<string, string>>(gridJson);

                AuditoriaOtros audOts = null;
                switch (GetSessionPage.GetSession(SessionPage.PageGestionPromoAudOts))
                {
                    case Valores.PageEvento_Modificar:
                        
                        AuditoriaIdTmp = Request["ots_id"];
                        audOts = AuditoriaOtros.GetEditableRoot(Guid.Parse(AuditoriaIdTmp));                       
                        stringMsg = "Auditoria Otros modificada";
                        break;
                    case Valores.PageEvento_Nuevo:
                      
                        audOts = AuditoriaOtros.NewEditableRoot();
                        audOts.Id = System.Guid.NewGuid();
                        //audOts.ExpedienteId = Request["exp_id"];
                        audOts.ExpedienteAuditoriaId = Request["exa_id"];
                        stringMsg = "Nueva Auditoria Otros creada";
                        break;
                }
                            
              
                audOts.FechaInicio = DateTime.Parse(dataItem["FechaInicio"]);
                audOts.FechaFin    = DateTime.Parse(dataItem["FechaFin"]);
                audOts.PlanAccion  = Valores.Codigo_CHAR_No;
                //Caso de tipo auditoria se referencia de una auditoria de monitoreo o auditoria pma
                if (Request["mon_root_id"] != null)
                {
                    audOts.MonitoreoIdAdd = Request["mon_root_id"];
                    
                }
                if (Request["cmp_root_id"] != null)
                {
                    audOts.PmaIdAdd = Request["cmp_root_id"];

                }
                if (Request["ots_root_id"] != null)
                {
                    audOts.OtrosIdAdd2 = Request["ots_root_id"];

                }
                //
                if (Request["exa_root_id"] != null)
                {
                    audOts.ExpedienteAuditoriaId = Request["exa_root_id"];
                }
                //
                audOts.Nombre = Valores.NombreOtrosPlandeAccion;
                if (Request["code_root_fase"] != null && Request["code_root_fase"] == Constantes.APoliza)
                {
                    audOts.Nombre = Valores.NombreOtrosSegPagAnual;
                }

                if (Request["closePlus"] == null)
                {
                    audOts.Save();
                }
                else
                {
                    //Auditoria de cumplimiento
                    if (Request["code_root_fase"] != null )
                    {
                        Session[Constantes.AChildPlanAccionCump] = audOts;
                    }

                    //Caso de crear una auditoria a partir de una nueva auditoria
                    if (Request["mon_root_id"] != null)
                    {
                       //AuditoriaMonitoreo audMonAux = AuditoriaMonitoreo.GetEditableRoot(Guid.Parse(Request["mon_root_id"]));
                        //audMonAux.OtrosIdAdd = audOts.Id.ToString();
                        //audMonAux.Save();
                       
                        Session[Constantes.AChildPlanAccionMonitoreo] = audOts;
                    }
                    if (Request["cmp_root_id"] != null)
                    {
                        //AuditoriaPMA audPmaAux = AuditoriaPMA.GetEditableRoot(Guid.Parse(Request["cmp_root_id"]));
                        //audPmaAux.OtrosIdAdd = audOts.Id.ToString();
                        //audPmaAux.Save();
                      
                        Session[Constantes.AChildPlanAccionPMA] = audOts;
                    }
                    if (Request["ots_root_id"] != null)
                    {
                        Session[Constantes.AChildOtros] = audOts;
                        //AuditoriaOtros audOtsAux = AuditoriaOtros.GetEditableRoot(Guid.Parse(Request["ots_root_id"]));
                        //audOtsAux.OtrosIdAdd1 = audOts.Id.ToString();
                        //audOtsAux.Save();
                       
                    }
                   
                }
                //Habilitar agregar documentos
                this.btnEnviar.Enable();
                this.btnSave.Disable();
                X.Msg.Show(new MessageBoxConfig
                {
                    Buttons = MessageBox.Button.OK,
                    Icon    = MessageBox.Icon.INFO,
                    Title   = Titulos.TituloAviso,
                    Message = string.Format("{0}", stringMsg),
                   
                });
                //Actualizar valor de Id ots
                this.hdIdGlobalOts.SetValue(audOts.Id.ToString());
                this.gdDocAdd.GetStore().Reload();
            }
            catch (Exception ex)
            {
                RegistrarLog(ex);
            }
        }
        #region Documentos adicionales
        [DirectMethod]
        public ArchivoAdicionalLista BindDataAddArchivos(string action, Dictionary<string, object> extraParams)
        {
            try
            {
                string queryPrm = extraParams["idOts"].ToString();
                if (queryPrm != "")
                {
                    ModuloCriteria fileCriteria = ModuloCriteria.NewModuloCriteria();
                    fileCriteria.Id = queryPrm;
                    fileCriteria.Modulo = Valores.Modulo_Archivo_Aud_Otros;
                    return ArchivoAdicionalLista.GetArchivoAdicionalLista(fileCriteria);
                }
                return null;
            }
            catch (Exception ex)
            {
                RegistrarLog(ex);
            }
            return null;

        }
        [DirectMethod( ShowMask = true)]
        public Boolean DeleteDocumentoAdicional(Guid idArch)
        {
            try
            {
                DocumentoAdicional objArch = DocumentoAdicional.GetEditableRoot(idArch);
                objArch.Delete();
                objArch.Save();
                gdDocAdd.GetStore().Reload();
            }
            catch (Exception ex)
            {
                RegistrarLog(ex);
            }
            return (true);
        }
        protected void btnEnviar_Click(object sender, DirectEventArgs e)
        {
            try
            {
                btnEnviar.Disable();
                string json = e.ExtraParams["Values"];
                Dictionary<string, string>[] listItems = JSON.Deserialize<Dictionary<string, string>[]>(json);
                List<DocumentoAdicional> listObjAdd = new List<DocumentoAdicional>();
                foreach (Dictionary<string, string> row in listItems)
                {
                    Boolean ifAdd = true;
                    Boolean.TryParse(row["Nuevo"], out ifAdd);
                    if (ifAdd == true)
                    {

                        DocumentoAdicional objDocAdd = DocumentoAdicional.NewEditableRoot();
                        objDocAdd.Id = System.Guid.NewGuid();

                        objDocAdd.Nombre = row["Nombre"];
                        objDocAdd.Formato = row["Formato"];
                        objDocAdd.Obligatorio = row["Obligacion"].Substring(0, 1).ToUpper();

                        objDocAdd.Modulo = Valores.Modulo_Archivo_Aud_Otros;
                        objDocAdd.IdModulo = e.ExtraParams["IdOts"];

                        if (Request["closePlus"] == null)
                        {
                            objDocAdd.Save();
                        }
                        else
                        {
                            listObjAdd.Add(objDocAdd);
                        }
                    }
                }
                if (Request["closePlus"] != null)
                {
                    Session[Constantes.AChildDocOtros] = listObjAdd;
                }
               //Metodo de  Handler = "window.parent.App.CloseNuevoExpediente();" invocado desde [~/Auditoria/admin/Monitoreo/pgAdmAM.aspx]
                X.Msg.Show(new MessageBoxConfig()
                {
                    Message = "Documentos <b>Adicionales</b> creados",
                    Title = Titulos.TituloAviso,
                    Buttons = MessageBox.Button.OK,
                    Icon = MessageBox.Icon.INFO
                    //,Handler = "window.parent.App.CloseNuevoExpediente();"
                });
                //
                gdDocAdd.GetStore().Reload();
            }
            catch (Exception ex)
            {
                RegistrarLog(ex);
            }

        }
        protected void btnUpdate_Click(object sender, DirectEventArgs e)
        {
            try
            {

                string json = e.ExtraParams["Values"];
                var row = JSON.Deserialize<Dictionary<string, string>>(json);
                if (row["Id"] != "")
                {
                    DocumentoAdicional objDocAdd = DocumentoAdicional.GetEditableRoot(Guid.Parse(row["Id"]));

                    objDocAdd.Nombre = row["Nombre"];
                    objDocAdd.Formato = row["Formato"];
                    objDocAdd.Obligatorio = row["rdgSiNo_group"];
                    objDocAdd.Save();
                    gdDocAdd.GetStore().Reload();
                }

            }
            catch (Exception ex)
            {
                RegistrarLog(ex);
            }

        }
        #endregion 

    }
}